[译文]Web开发必知必会

原文:What should every programmer know about web development?

注:原文链接太多,请自行去原文中找引用的文章和工具链接

界面和用户体验

  1. 当心浏览器不兼容问题,还有不同操作系统上渲染效果。
  2. 考虑除了主流浏览器,用户还有可能使用哪些设备访问?例如:手机,屏幕阅读器,搜索引擎等。
  3. 分批部署:如何在不影响用户的情况下部署更新。拥有一个或多个测试或者分批部署环境来实现架构、代码或内容的变更,并且在不打断任何事情的情况下部署。有一个自动化的部署方式,这通常需要一个版本控制系统和自动化构建系统。
  4. 不要直接给用户显示不友好的错误信息。
  5. 不要直接显示用户的邮箱地址,这会被发垃圾邮件的人给爬去。
  6. 给用户产生的链接加上rel="nofollow",防止spam。
  7. 构建良好的访问频率限制
  8. 学习如何渐进增强
  9. 避免表单刷新重复提交

安全

  1. 去读OWASP文档
  2. SQL注入
  3. 不要信任用户输入和随着请求带来的东西(包括cookie和表单隐藏域)
  4. 使用盐来加密密码,防止彩虹表攻击。使用速度慢的哈希算法,例如bcrypt或scrypt,来存储密码。避免直接使用MD5或者SHA。参考如何安全存储密码
  5. 不要用你自己异想天开的认证系统。你很容易在一些细微的地方,不容易测试的地方出错,而且你还一直不会发现,直到你被黑了。
  6. 知道如何处理信用卡
  7. 在登录页面和任何敏感数据出现的地方使用HTTPS
  8. XSS
  9. CSRF
  10. 打上最新的补丁
  11. 确保数据库连接是安全的
  12. 及时获取最新的攻击技术和平台缺陷
  13. 读 The Google Browser Security Handbook
  14. 读 The Web Application Hacker's Handbook

性能

  1. 如果需要,使用缓存。正确理解HTTP缓存。
  2. 优化图片。不要使用一个20KB的图片做平铺背景。
  3. 学习gzip,压缩页面大小。
  4. 合并css和js
  5. 看看雅虎和其他的前端最佳实践
  6. 使用CSS Image Sprites
  7. 繁忙的站点应该考虑跨域名拆分组件
  8. 静态内容使用CDN和独立域名
  9. 最小化HTTP请求
  10. 压缩JS
  11. 搞个favicon.ico,要不然浏览器会不断请求它,这会浪费你的带宽。

SEO

  1. 使用浏览器友好的URL,例如,使用example.com/pages/45-article-title而不是example.com/index.php?page=45
  2. 使用#!替换#,搞清楚为什么。
  3. 不用让链接叫做“点我”,浪费SEO机会。
  4. 站点地图sitemap.xml
  5. <link rel="canonical" .../>
  6. Google Webmaster Tools
  7. Google Analytics
  8. robots.txt
  9. 使用301 Moved Permanently来重定向www.example.com到example.com,避免google拆分不同站点排名
  10. 小心恶意爬虫

技术

  1. 理解HTTP,像GET,POST,sessions,cookies等,知道stateless是什么意思
  2. 符合W3C规范
  3. 浏览器是如何处理JavaScript的
  4. 浏览器是如何加载css,js的,为何要把js放到尾部
  5. 理解js沙盒,尤其当你要使用iframes的时候
  6. 记住js会被禁用
  7. 搞清301和302的区别
  8. 尽可能的了解你的开发平台
  9. 使用normalize.css
  10. 使用js框架
  11. 别造轮子
  12. 与上条相对应,别一上来就用了20个第三方库,搞清楚你需要什么

Bug修正

  1. 20%的时间开发代码,80%的时间维护它
  2. 搞个良好的错误报告方案
  3. 让用户可以联系到你
  4. 文档,还有未来要支持什么
  5. 频繁备份(还要确保这些备份是可用的),不光要有备份方案,还要有恢复方案
  6. 日志啊,日志。网站挂了你好能找到问题。
  7. 日志要捕获处理的异常和没处理的异常,然后分析日志,找出关键问题。
by Jungledrum